package org.madmatrix.glib.util;

import java.io.File;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Environment;

/**
 * 文件工具
 * 
 * @author madmatrix
 * 
 */
public class FileUtil {
	
	/**
	 * 从SharedPreferences中读取一个整型值，该值不存在则返回指定的默认值
	 * 
	 * @param context
	 * @param fileName
	 * @param key
	 * @param defVal 默认值
	 * @return
	 */
	public static int loadInt(Context context, String fileName, String key, int defVal) {
		return Integer.parseInt(loadString(context, fileName, key, defVal + ""));
	}
	
	/**
	 * 保存整形键值对到本地配置
	 * 
	 * @param context
	 * @param fileName
	 * @param key
	 * @param value
	 */
	public static void saveInt(Context context, String fileName, String key, int value) {
		saveString(context, fileName, key, value + "");
	}
	
	/**
	 * 从SharedPreferences中读取一个字符串配置，该字符串不存在则返回指定的默认值
	 * 
	 * @param context
	 * @param fileName
	 * @param key
	 * @param defVal 默认值
	 * @return
	 */
	public static String loadString(Context context, String fileName, String key, String defVal) {
		SharedPreferences preferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
		return preferences.getString(key, defVal);
	}
	
	/**
	 * 从SharedPreferences中读取一个字符串配置，该字符串不存在则返回空串
	 * 
	 * @param context
	 * @param fileName 文件名
	 * @param key 配置名
	 * @return
	 */
	public static String loadString(Context context, String fileName, String key) {
		SharedPreferences preferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
		return preferences.getString(key, "");
	}
	
	/**
	 * 保存字符串键值对到SharedPreferences中
	 * 
	 * @param context
	 * @param fileName 文件名
	 * @param key 配置键
	 * @param value 配置值
	 */
	public static void saveString(Context context, String fileName, String key, String value) {
		SharedPreferences preferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
		Editor editor = preferences.edit();
		editor.putString(key, value);
		editor.commit();
	}
	
	/**
	 * 从SharedPreferences中获取一个boolean类型配置
	 * 
	 * @param context
	 * @param fileName
	 * @param key
	 * @return
	 */
	public static boolean loadBoolean(Context context, String fileName, String key) {
		SharedPreferences preferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
		return preferences.getBoolean(key, false);
	}
	
	/**
	 * 保存一个boolean类型的键值对到SharedPreferences中
	 * 
	 * @param context
	 * @param fileName
	 * @param key
	 * @param value
	 */
	public static void saveBoolean(Context context, String fileName, String key, boolean value) {
		SharedPreferences preferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
		Editor editor = preferences.edit();
		editor.putBoolean(key, value);
		editor.commit();
	}

	/**
	 * 返回SD卡根路径
	 * 
	 * @return
	 */
	public static String getSdcardRoot() {
		if (isSdcardReady()) {
			return Environment.getExternalStorageDirectory().getAbsolutePath();
		}

		return null;
	}

	/**
	 * 判断SD卡是否存在
	 * 
	 * @return
	 */
	public static boolean isSdcardReady() {
		return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
	}

	/**
	 * 判断给定路径是否存在，不存在则创建
	 * 
	 * @param dirPath
	 */
	public static void checkAndMakeDir(String dirPath) {
		File dir = new File(dirPath);
		if (!dir.exists()) {
			dir.mkdirs();
		}
	}
}
